#region License

// Copyright (c) 2013, ClearCanvas Inc.
// All rights reserved.
// http://www.clearcanvas.ca
//
// This file is part of the ClearCanvas RIS/PACS open source project.
//
// The ClearCanvas RIS/PACS open source project is free software: you can
// redistribute it and/or modify it under the terms of the GNU General Public
// License as published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// The ClearCanvas RIS/PACS open source project is distributed in the hope that it
// will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along with
// the ClearCanvas RIS/PACS open source project.  If not, see
// <http://www.gnu.org/licenses/>.

#endregion

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ClearCanvas.Common.Serialization;

namespace ClearCanvas.Enterprise.Common.Authentication
{
	[DataContract]
	public class InitiateSessionResponse : DataContractBase
	{
		public InitiateSessionResponse(SessionToken sessionToken, string[] authorityTokens, Guid[] authorityGroups, string displayName, string emailAddress)
		{
			this.SessionToken = sessionToken;
			this.AuthorityTokens = authorityTokens;
		    this.DisplayName = displayName;
		    this.DataGroupOids = authorityGroups;
		    this.EmailAddress = emailAddress;
			this.WarningMessages = new List<string>();
		}

		/// <summary>
		/// Session token that identifies newly created session.
		/// </summary>
		[DataMember]
		public SessionToken SessionToken;

		/// <summary>
		/// User authority tokens, if requested.
		/// </summary>
		[DataMember]
		public string[] AuthorityTokens;

        /// <summary>
        /// Name of the user.
        /// </summary>
	    [DataMember] 
        public string DisplayName;

        /// <summary>
        /// Email Address of the user.
        /// </summary>
        [DataMember]
        public string EmailAddress;

        /// <summary>
        /// User data authority group oids, if requested.
        /// </summary>
        [DataMember]
        public Guid[] DataGroupOids;

		/// <summary>
		/// Warning messages to be presented to user upon login, if any.
		/// </summary>
		[DataMember]
		public List<string> WarningMessages;
	}
}
